﻿//struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
//    struct ListNode* p = 0, * head = 0;
//    if (!list1)
//        return list2;
//    if (!list2)
//        return list1;
//    if (list1->val < list2->val)
//    {
//        p = list1;
//        list1 = list1->next;
//    }
//    else
//    {
//        p = list2;
//        list2 = list2->next;
//    }
//    head = p;
//    while (list1 && list2)
//    {
//        if (list1->val < list2->val)
//        {
//            p->next = list1;
//            p = list1;
//            list1 = list1->next;
//        }
//        else
//        {
//            p->next = list2;
//            p = list2;
//            list2 = list2->next;
//        }
//    }
//    if (!list1)
//    {
//        p->next = list2;
//    }
//    else
//    {
//        p->next = list1;
//    }
//    return head;
//}

//class PalindromeList {
//public:
//    bool chkPalindrome(ListNode* A) {
//        ListNode* p = (ListNode*)malloc(sizeof(ListNode));
//        p->next = A;
//        ListNode* pa = p;
//        ListNode* pp = p;
//        while (pa && pa->next)
//        {
//            pa = pa->next->next;
//            pp = pp->next;
//        }
//
//        ListNode* cur = pp->next;
//        ListNode* next = cur->next;
//        ListNode* pre = pp;
//        pp->next = NULL;
//        while (1)
//        {
//            cur->next = pre;
//            pre = cur;
//            if (next == NULL)
//                break;
//            cur = next;
//            next = cur->next;
//        }
//
//        ListNode* head = A;
//        ListNode* tail = cur;
//        while (tail != pp)
//        {
//            if (head->val != tail->val)
//                return false;
//            tail = tail->next;
//            head = head->next;
//        }
//        return true;
//    }
//};

//整型提升的规律运用
//#include<stdio.h>
//int main()
//{
//	char k = 2;//注意：在char的类型整型提升过程中，256是一个循环
//	fprintf(stdout, "%d", k);
//	k += 256;
//	fprintf(stdout, "\n%d\n", k);//输出2
//	return 0;
//}

//负数的算数左右移动
//#include<stdio.h>
//int main()
//{
//	int a = -7;
//	while (a)
//	{
//		fprintf(stdout, "%d ", a);//将会死循环，因为在计算机内部是用补码移动
//		a = a >> 1;
//	}
//	fprintf(stdout, "%d", a);
//	return 0;
//}

